package com.tinet.reservas;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.tinet.reservas.model.Sala;
/**
 * 
 * Dao de sala.
 *
 * @author tinet
 */
public class SalaDao {
    /**
     * @param em .
     * 
     */
    private EntityManager em;
    /**
     * 
     * @method constructor
     * @param em .
     * 
     */
    public SalaDao(EntityManager em) {
        super();
        this.em = em;
    }

    /**
     * 
     * @method mostrarTodo
     * @return lista de reservas .
     * 
     */
    public List<Sala> mostrarTodo() {
        Query q = em.createQuery("SELECT s FROM Sala s");

        List<Sala> lista = q.getResultList();
        return lista;

    }
    /**
     * 
     * @method mostrarSala
     * @return una sala .
     * @param sala .
     */
    public Sala mostrarSala(Sala sala) { // este es mi buscar
        Query q = em
                .createQuery("SELECT s FROM Sala s WHERE id=:id");
        q.setParameter("id", sala.getId());
        Sala sal = (Sala) q.getSingleResult();
        return sal;
    }
    /**
     * 
     * @method insertar
     *  .
     * @param sala .
     */
    public void insertar(Sala sala) {

        em.persist(sala);

    }
    /**
     * 
     * @method eliminar
     * @param sala .
     * 
     */
    public void eliminar(Sala sala) {
        SalaDao salaDao = new SalaDao(em);
        Sala sal = salaDao.mostrarSala(sala);
        em.remove(sal);
    }

    /**
     * 
     * @method editar

     * @param sala .
     */
    public void editar(Sala sala) {
        SalaDao salaDao = new SalaDao(em);
        Sala salaAntigua = sala;
        Sala salaNueva = salaDao.mostrarSala(salaAntigua);

        salaNueva.setCapacidad(salaAntigua.getCapacidad());
        salaNueva.setEstado(salaAntigua.getEstado());
        salaNueva.setNombre(salaAntigua.getNombre());
        salaNueva.setProyector(salaAntigua.getProyector());
        salaNueva.setTv(salaAntigua.getTv());
        salaNueva.setUbicacion(salaAntigua.getUbicacion());


        em.persist(salaNueva);

    }

}
